/**HEADER********************************************************************
* 
* Copyright (c) 2008 Freescale Semiconductor;
* All Rights Reserved
*
*************************************************************************** 
*
* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR 
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  
* IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
* THE POSSIBILITY OF SUCH DAMAGE.
*
**************************************************************************
*
* $FileName: lwgpio_mcf5445.h$
* $Version : 3.8.2.1$
* $Date    : Feb-13-2012$
*
* Comments:
*
*   The file contains definitions used in user program and/or in other
*   kernel modules to access GPIO pins
*
*END************************************************************************/
#ifndef __lwgpio_mcf5445_h__
#define __lwgpio_mcf5445_h__ 1

#define LWGPIO_PIN_VALID (0x80000000) /* Note: this is for backwards compatibility with GPIO driver only */

/* Pin field definitions */
#define LWGPIO_PIN_SHIFT (0)
#define LWGPIO_PIN_MASK (0x7 << LWGPIO_PIN_SHIFT)

#define LWGPIO_PIN(x) (((x) << LWGPIO_PIN_SHIFT) & LWGPIO_PIN_MASK)

/* Port field definitions */
#define LWGPIO_PORT_SHIFT  (3)
#define LWGPIO_PORT_MASK   (0xFF << LWGPIO_PORT_SHIFT)
#define LWGPIO_PORT(x)     (((x) << LWGPIO_PORT_SHIFT) & LWGPIO_PORT_MASK)

#define LWGPIO_PORT_FEC0H     (LWGPIO_PORT(0) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FEC0L     (LWGPIO_PORT(1) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_SSI       (LWGPIO_PORT(2) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FBCTL     (LWGPIO_PORT(3) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_BE        (LWGPIO_PORT(4) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_CS        (LWGPIO_PORT(5) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_DMA       (LWGPIO_PORT(6) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FECI2C    (LWGPIO_PORT(7) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_UART      (LWGPIO_PORT(9) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_DSPI      (LWGPIO_PORT(10) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_TIMER     (LWGPIO_PORT(11) | LWGPIO_PIN_VALID)

#define LWGPIO_PORT_PCI       (LWGPIO_PORT(12) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_USB       (LWGPIO_PORT(13) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_ATAH      (LWGPIO_PORT(14) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_ATAL      (LWGPIO_PORT(15) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FEC1H     (LWGPIO_PORT(16) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FEC1L     (LWGPIO_PORT(17) | LWGPIO_PIN_VALID)

#define LWGPIO_PORT_FBADH     (LWGPIO_PORT(20) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FBADMH    (LWGPIO_PORT(21) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FBADML    (LWGPIO_PORT(22) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FBADL     (LWGPIO_PORT(23) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_PAR_IRQ   (LWGPIO_PORT(24) | LWGPIO_PIN_VALID)

#define LWGPIO_PIN0   (0)
#define LWGPIO_PIN1   (1)
#define LWGPIO_PIN2   (2)
#define LWGPIO_PIN3   (3)
#define LWGPIO_PIN4   (4)
#define LWGPIO_PIN5   (5)
#define LWGPIO_PIN6   (6)
#define LWGPIO_PIN7   (7)

typedef struct {
    uint_8  port_idx;
    uint_8  pinmask; /* since struct holds one pin, pinmask will have only one bit set */
    uint_32 flags;
} LWGPIO_STRUCT, _PTR_ LWGPIO_STRUCT_PTR;


#define LWGPIO_MUX_FEC0H0_GPIO  (0)
#define LWGPIO_MUX_FEC0H1_GPIO  (0)
#define LWGPIO_MUX_FEC0H2_GPIO  (0)
#define LWGPIO_MUX_FEC0H3_GPIO  (0)
#define LWGPIO_MUX_FEC0H4_GPIO  (0)
#define LWGPIO_MUX_FEC0H5_GPIO  (0)
#define LWGPIO_MUX_FEC0H6_GPIO  (0)
#define LWGPIO_MUX_FEC0H7_GPIO  (0)

#define LWGPIO_MUX_FEC0L0_GPIO  (0)
#define LWGPIO_MUX_FEC0L1_GPIO  (0)
#define LWGPIO_MUX_FEC0L2_GPIO  (0)
#define LWGPIO_MUX_FEC0L3_GPIO  (0)
#define LWGPIO_MUX_FEC0L4_GPIO  (0)
#define LWGPIO_MUX_FEC0L5_GPIO  (0)
#define LWGPIO_MUX_FEC0L6_GPIO  (0)
#define LWGPIO_MUX_FEC0L7_GPIO  (0)

#define LWGPIO_MUX_UART0_GPIO  (0)
#define LWGPIO_MUX_UART1_GPIO  (0)
#define LWGPIO_MUX_UART2_GPIO  (0)
#define LWGPIO_MUX_UART3_GPIO  (0)
#define LWGPIO_MUX_UART4_GPIO  (0)
#define LWGPIO_MUX_UART5_GPIO  (0)
#define LWGPIO_MUX_UART6_GPIO  (0)
#define LWGPIO_MUX_UART7_GPIO  (0)

#define LWGPIO_MUX_PCI0_GPIO  (0)
#define LWGPIO_MUX_PCI1_GPIO  (0)
#define LWGPIO_MUX_PCI2_GPIO  (0)
#define LWGPIO_MUX_PCI3_GPIO  (0)
#define LWGPIO_MUX_PCI4_GPIO  (0)
#define LWGPIO_MUX_PCI5_GPIO  (0)
#define LWGPIO_MUX_PCI6_GPIO  (0)
#define LWGPIO_MUX_PCI7_GPIO  (0)

#define LWGPIO_MUX_FEC1H0_GPIO  (0)
#define LWGPIO_MUX_FEC1H1_GPIO  (0)
#define LWGPIO_MUX_FEC1H2_GPIO  (0)
#define LWGPIO_MUX_FEC1H3_GPIO  (0)
#define LWGPIO_MUX_FEC1H4_GPIO  (0)
#define LWGPIO_MUX_FEC1H5_GPIO  (0)
#define LWGPIO_MUX_FEC1H6_GPIO  (0)
#define LWGPIO_MUX_FEC1H7_GPIO  (0)

#define LWGPIO_MUX_FEC1L0_GPIO  (0)
#define LWGPIO_MUX_FEC1L1_GPIO  (0)
#define LWGPIO_MUX_FEC1L2_GPIO  (0)
#define LWGPIO_MUX_FEC1L3_GPIO  (0)
#define LWGPIO_MUX_FEC1L4_GPIO  (0)
#define LWGPIO_MUX_FEC1L5_GPIO  (0)
#define LWGPIO_MUX_FEC1L6_GPIO  (0)
#define LWGPIO_MUX_FEC1L7_GPIO  (0)

#define LWGPIO_MUX_FBADH0_GPIO  (0)
#define LWGPIO_MUX_FBADH1_GPIO  (0)
#define LWGPIO_MUX_FBADH2_GPIO  (0)
#define LWGPIO_MUX_FBADH3_GPIO  (0)
#define LWGPIO_MUX_FBADH4_GPIO  (0)
#define LWGPIO_MUX_FBADH5_GPIO  (0)
#define LWGPIO_MUX_FBADH6_GPIO  (0)
#define LWGPIO_MUX_FBADH7_GPIO  (0)

#define LWGPIO_MUX_FBADMH0_GPIO  (0)
#define LWGPIO_MUX_FBADMH1_GPIO  (0)
#define LWGPIO_MUX_FBADMH2_GPIO  (0)
#define LWGPIO_MUX_FBADMH3_GPIO  (0)
#define LWGPIO_MUX_FBADMH4_GPIO  (0)
#define LWGPIO_MUX_FBADMH5_GPIO  (0)
#define LWGPIO_MUX_FBADMH6_GPIO  (0)
#define LWGPIO_MUX_FBADMH7_GPIO  (0)

#define LWGPIO_MUX_FBADML0_GPIO  (0)
#define LWGPIO_MUX_FBADML1_GPIO  (0)
#define LWGPIO_MUX_FBADML2_GPIO  (0)
#define LWGPIO_MUX_FBADML3_GPIO  (0)
#define LWGPIO_MUX_FBADML4_GPIO  (0)
#define LWGPIO_MUX_FBADML5_GPIO  (0)
#define LWGPIO_MUX_FBADML6_GPIO  (0)
#define LWGPIO_MUX_FBADML7_GPIO  (0)

#define LWGPIO_MUX_FBADL0_GPIO  (0)
#define LWGPIO_MUX_FBADL1_GPIO  (0)
#define LWGPIO_MUX_FBADL2_GPIO  (0)
#define LWGPIO_MUX_FBADL3_GPIO  (0)
#define LWGPIO_MUX_FBADL4_GPIO  (0)
#define LWGPIO_MUX_FBADL5_GPIO  (0)
#define LWGPIO_MUX_FBADL6_GPIO  (0)
#define LWGPIO_MUX_FBADL7_GPIO  (0)

#define LWGPIO_MUX_DSPI0_GPIO  (0)
#define LWGPIO_MUX_DSPI1_GPIO  (0)
#define LWGPIO_MUX_DSPI2_GPIO  (0)
#define LWGPIO_MUX_DSPI3_GPIO  (0)
#define LWGPIO_MUX_DSPI4_GPIO  (0)
#define LWGPIO_MUX_DSPI5_GPIO  (0)
#define LWGPIO_MUX_DSPI6_GPIO  (0)

#define LWGPIO_MUX_FECI2C0_GPIO  (0)
#define LWGPIO_MUX_FECI2C1_GPIO  (0)
#define LWGPIO_MUX_FECI2C2_GPIO  (0)
#define LWGPIO_MUX_FECI2C3_GPIO  (0)
#define LWGPIO_MUX_FECI2C4_GPIO  (0)
#define LWGPIO_MUX_FECI2C5_GPIO  (0)

#define LWGPIO_MUX_ATAH0_GPIO  (0)
#define LWGPIO_MUX_ATAH1_GPIO  (0)
#define LWGPIO_MUX_ATAH2_GPIO  (0)
#define LWGPIO_MUX_ATAH3_GPIO  (0)
#define LWGPIO_MUX_ATAH4_GPIO  (0)
#define LWGPIO_MUX_ATAH5_GPIO  (0)

#define LWGPIO_MUX_SSI0_GPIO  (0)
#define LWGPIO_MUX_SSI1_GPIO  (0)
#define LWGPIO_MUX_SSI2_GPIO  (0)
#define LWGPIO_MUX_SSI3_GPIO  (0)
#define LWGPIO_MUX_SSI4_GPIO  (0)

#define LWGPIO_MUX_BE0_GPIO  (0)
#define LWGPIO_MUX_BE1_GPIO  (0)
#define LWGPIO_MUX_BE2_GPIO  (0)
#define LWGPIO_MUX_BE3_GPIO  (0)

#define LWGPIO_MUX_FBCTL0_GPIO  (0)
#define LWGPIO_MUX_FBCTL1_GPIO  (0)
#define LWGPIO_MUX_FBCTL2_GPIO  (0)
#define LWGPIO_MUX_FBCTL3_GPIO  (0)

#define LWGPIO_MUX_DMA0_GPIO  (0)
#define LWGPIO_MUX_DMA1_GPIO  (0)
#define LWGPIO_MUX_DMA2_GPIO  (0)
#define LWGPIO_MUX_DMA3_GPIO  (0)

#define LWGPIO_MUX_TIMER0_GPIO  (0)
#define LWGPIO_MUX_TIMER1_GPIO  (0)
#define LWGPIO_MUX_TIMER2_GPIO  (0)
#define LWGPIO_MUX_TIMER3_GPIO  (0)

#define LWGPIO_MUX_ATAL0_GPIO  (0)
#define LWGPIO_MUX_ATAL1_GPIO  (0)
#define LWGPIO_MUX_ATAL2_GPIO  (0)


#define LWGPIO_MUX_CS1_GPIO  (0)
#define LWGPIO_MUX_CS2_GPIO  (0)
#define LWGPIO_MUX_CS3_GPIO  (0)

#define LWGPIO_MUX_USB0_GPIO  (0)
#define LWGPIO_MUX_USB1_GPIO  (0)


#endif
